package com.college.common.utils.security;

import com.alibaba.fastjson2.JSONObject;
import com.college.common.utils.log.LogPrintUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.DigestUtils;

import java.util.SortedMap;


/**
 * @author 小C工作室
 */
@Slf4j
public class SignAuthCheckUtils {

    /**
     * 验证签名
     *
     * @param params
     * @param sign
     * @return
     */
    public static boolean verifySign(SortedMap<String, Object> params, String sign, Long timestamp) {
        String paramsJsonStr = "Timestamp" + timestamp + JSONObject.toJSONString(params);
        return verifySign(paramsJsonStr, sign);
    }

    /**
     * 验证签名
     *
     * @param params
     * @param sign
     * @return
     */
    public static boolean verifySign(String params, String sign) {
        LogPrintUtils.info(log, "请求头签名 : {}", sign);
        if (StringUtils.isEmpty(params)) {
            return false;
        }
        LogPrintUtils.info(log, "请求参数 : {}", params);
        String paramsSign = getParamsSign(params);
        LogPrintUtils.info(log, "参数签名 : {}", paramsSign);
        return sign.equals(paramsSign);
    }

    /**
     * @return 得到签名
     */
    public static String getParamsSign(String params) {
        return DigestUtils.md5DigestAsHex(params.getBytes()).toUpperCase();
    }
}
